/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package beans;

import dao.StaticsStrings;
import dao.impl.Delete;
import dao.impl.GrowMessages;
import dao.impl.UsuariosDaoImpl;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import model.Usuarios;
import org.primefaces.context.RequestContext;

/**
 *
 * @author rafael
 */
@ManagedBean
@SessionScoped
public class BeanLogin implements Serializable {

    /**
     * Creates a new instance of BeanLogin
     */
    private Usuarios usuarioLocal;
    private boolean logado;
    private String username;
    private String password;

    public BeanLogin() {
        this.usuarioLocal = new Usuarios();
    }

    public void logoff() {
        this.logado = false;
        this.password = null;
        this.username = null;
        this.usuarioLocal = new Usuarios();
    }

    public void loginUser() {
        usuarioLocal = new UsuariosDaoImpl().selectUser(getUsername(), getPassword());
        if (usuarioLocal == null) {
            usuarioLocal = new Usuarios();
            logoff();
            GrowMessages.errorMessage(StaticsStrings.OOOPS, StaticsStrings.DADOS_INVALIDOS);
        } else {
            this.password = null;
            this.username = null;
            GrowMessages.infoMessage("Olá", usuarioLocal.getApelido());
            setLogado(true);

        }
    }

    public void inserirUsuario() {
        try {
            if (usuarioLocal.getLogin().length() < 5) {
                GrowMessages.errorMessage("Erro", "Mínimo de 5 caracteres para o campo 'Login' ");
            } else {
                if (usuarioLocal.getSenha().length() < 5) {
                    GrowMessages.errorMessage("Erro", "Mínimo de 5 caracteres para o campo 'Senha' ");
                } else {
                    if (usuarioLocal.getEmail().length() < 1) {
                        GrowMessages.errorMessage("Erro", "Mínimo de 5 caracteres para o campo 'Email' ");
                    } else {
                        if (usuarioLocal.getApelido().length() < 5) {
                            GrowMessages.errorMessage("Erro", "Mínimo de 5 caracteres para o campo 'Apelido' ");
                        } else {
                            Usuarios usuarios = new UsuariosDaoImpl().selectUser(usuarioLocal.getLogin());
                            if (usuarios != null) {
                                GrowMessages.errorMessage("Erro", "Usuario já existe, escolha outro login!");
                            } else {
                                new UsuariosDaoImpl().inserir(usuarioLocal);
                                RequestContext.getCurrentInstance().execute("diagNovoUsuario.hide();");
                                RequestContext.getCurrentInstance().update("formPrincipal");
                            }

                        }
                    }
                }
            }
        } catch (Exception e) {
        } finally {
            RequestContext.getCurrentInstance().update("index");
        }
    }

    public void deletarUsuario() {
        try {
            Delete.deletUsuario(usuarioLocal);            
        } catch (Exception e) {
        } finally {
            logoff();
            RequestContext.getCurrentInstance().update("formPrincipal");
        }
    }

    public void atualizarUsuario() {
        try {
            new UsuariosDaoImpl().atualizar(usuarioLocal);
        } catch (Exception e) {
        } finally {
            logoff();
            RequestContext.getCurrentInstance().update("formPrincipal");
        }
    }

    public Usuarios getUsuarioLocal() {
        return usuarioLocal;
    }

    public void setUsuarioLocal(Usuarios usuarioLocal) {
        this.usuarioLocal = usuarioLocal;
    }

    public boolean isLogado() {
        return logado;
    }

    public void setLogado(boolean logado) {
        this.logado = logado;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}
